;;;;::;;;:::::::::::::::::::::::::,,:::::::,,,,.........;:-< ,.,,,,,,,...,,,,...         !!!!!!!!!!!
;;;::::::::::::::::::::::::::::::,_=,:::::::,,,,,,,,,,,,*:().,,,,,,,,,.,.,,..      !!!!!!!!!!!!!!!!!
:::::::::::::::::::::::::::::::::.)>-:::::,,,,,,,,,,,,,,: (< ,,,..,......   !!!===!!!!!!!!!!!!!!!!!!
,:::::::::::::::::::::,::,,,,,,::.)[_:,,,,,,,,,,,,,,,,,::=(<<.,,=_.....             !!!!!!!!!!!!!!!!
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,=)>).,,,,,,,==,,,,,,,.,.!(<(..::--......       !!!!!!!!!!!!!!!!!!!=
....,,,,..........,,,,,,,,,,,,,,. -(<!,,,,,.: <=,..  .  -<}|-  ..))       !!!!!!!!!!!!!!!!!!!=====--
  ...... . .  ...........,,,,,,,.-[{(...... ,!>_      !!->}^_  :.-)-!!!!!!!!!!!=================----
                           . ... )|^>.      ,=))! !!!!!.!-)>>_!, ))=!!!!!========-------------------
!    !!!!!!!!!!!!!!!!!!!!!!!!!!  _>]>-!!!!!!.->(!!!====, .()<)= =}]======-==------------______------
!!!!!!==========================!-()<)-=--_-!<^<=------.,.!-(<-  )>(------_-_______________________(
=======-----------------------_-  =(()<))><- -<<(---===!=([}]>-,,=_)__________((((((((((((((((((((((
----------_____________________((<}|{((__-== .....,,,::; <{^{<<=!(<())(((((())))))))))))))))))))))))
____________((((((((((((((((((()(>|^[===! !    ...,,..., )[}{<>>>}^<)))))))))))))<)<<<<<<)))))))))))
(((((((((((((((()))))))))))))))__<]{[===! !  ! ...,,,,:,! (_>[[[<[{><<<<<<<<<<<<<<<<<<<<<<<<<)))))))
)()))))))))))))))))<<<<<<<<<<<<_!_=)(=,.,:.:.,:,+,.;.;+:!,(!)<<)=-(>><<<<<<<<<<<<<<<<<<<<<<<<<))))))
_))))))<<<<<<<<<<<<<<(_)))>>>>>_!(-<)-%:,%=%,!.!S;.#,*S:!,(!<<<(=-(<><<<<<<<<<<<<<<<<<<<)<_((___((((
-))<[>>=-<<>>)_((>)=:+;;,, -=-__!--(_!,,.,!:.!  ,,,;:;+;..==_(((_==((()><_(>))<))_<(--_(-(,;;;;+=-!!
:,=)<>(+.)>(( =<<!:?S?*%*;:, :+,:: =,:*:,;;,.;:..,:,:*%+;+;:.(<[_!(_(<(->_(]!,!=)-( ,..=),+.:++;;:,,
(((<>[)-(<{>==-_=+??%++,:. !=:*+=>{|<-.!-!=_!;; -=.==,;,!-)>][-{]]^[_(-,_=!>!.=!-=-(.,,,)_=_:*?+**+?
(---=== .   !! .-.;;;  -    ,;,!_]}|]<,-)_,*%###%;!__.+!-)[{^!*-]{|>-<.+,.,_))(( ,,<=??*)!S=+S%?S#SS
))<<<>),,;,.!-_)(_!!:,, ;: :;+:%!]}|{>()) *%?S#S#S*!(!,=-)]}|-:={{|> =!..=,;,.:.:,;.:+:;,:?:*SS##@@%
=(__((= =!  !!=--===.:;;:;+*?**S!]}|}>=(<!**+%#SS?+ (!.!=<[{}=:-{]|<*+?:,:,;;;;;..; ;*++*+,++?S@@@@@
_)[><)-,,===!=!.::::*#?;:???S%%%=]}|{>()<.+*?S#SS%?.(=.!!_)<](!=)_)>-= ===--=====--! .:;+++;+?%%S@@@
 =)((()-=-(_ +.:; ..:+;++*++;;+*![{}])=-) ?*?%%S%SS+_!,  , !_-=! -)(_!. !!. .!=== = ,;,, :+;:+?*+SSS
 -)><=->())(-_(!:=__= !!!=,.-.:,!(><((-==.,:::;++*?+! ,.;?*?.!..,. ,;; -- ;.---!., =! ..==;*,=+,.?S?